#include "process_schedule.h"
#include<string.h>



int main(){

    PCB get_pcb[300];//为文件中读取的进程
    PCB pcb[300];//为进程就绪队列
    PCB *p=get_pcb;
    int n=0;
    printf("请选择你要读取的文件\n1.test_data_5.csv\n2.test_data_200.csv\n");
    scanf("%d",&n);
    //从文件中读取数据初始化结构体PCB
    init_process(p,n);//将文件内容读取出来写入结构体数组
    
    //当当前时间为进程到达时间时创建进程加入就绪队列
    int time=201;
    int start=0;
    for(int i=1;i<201;i++)
    {
        if(get_pcb[i].pid>0&&get_pcb[i].pid<65535){
        int id=get_pcb[i].pid;
        int art=get_pcb[i].arrive_time;
        int rt=get_pcb[i].run_time;
        int pr=get_pcb[i].priority;
        start++;
        pcb[start]=create_process(id,art,rt,pr);
       // printf("%d,%d,%d,%d----------------\n",id,art,rt,pr);
        }
     }
   // printf("numm:%d",start);


    int choice;
    printf("------------------请选择你的调度算法----------------------\n1.先来先服务算法\n2.短进程优先算法\n3.优先级+时间片轮转算法\n请输入你的选择：\n");
    scanf("%d",&choice);
    switch(choice)
    {
        case 1:
            {schedule_fifo(p,n);
               break;}
        case 2:
            {schedule_sjf(p,n);
                break;
            }
        case 3:
            {   printf("请输入时间片大小：\n");
                int Time=scanf("%d",&Time);
                destory_priority_round_robin(pcb,n,Time);
                break;
            }
        default: {printf("输入错误！！！");
                     break;
                 }

    }
    


    //先来先服务算法
    //schedule_fifo(p,n);
    //短进程优先算法
   // schedule_sjf(p,n);
    //优先级＋时间片轮转调度算法
    /*
    printf("请输入时间片大小：\n");
    int Time=scanf("%d",&Time);
   destory_priority_round_robin(pcb,n,Time);
   */
    
    return EXIT_SUCCESS;
}
